package com.shujia.scala

object Demo4Class {
  def main(args: Array[String]): Unit = {

    val stu = new Student("张三", 23)

    println(stu)

  }
}

//(_name: String, _age: Int)   默认构造函数的参数列表
class Student(_name: String, _age: Int) {

  /**
    * scala默认构造函数
    * {}   所有代码都会被执行
    *
    */
  println("默认构造函数")


  //定义成员变量
  val name: String = _name

  val age: Int = _age

  //  _   占位符  没有意义
  var gender: String = _

  var clazz: String = _

  /** *
    * 重载构造函数
    *
    */

  def this(_name: String, _age: Int, gender: String) {
    //在重载构造函数第一行需要先调用默认构造函数
    this(_name, _age)

    println("重载构造函数")

    //给成员变量赋值
    this.gender = gender

  }

  //多重构造函数

  def this(_name: String, _age: Int, gender: String, clazz: String) {
    //在重载构造函数第一行需要先调用默认构造函数
    this(_name, _age, gender)

    println("重载构造函数")

    //给成员变量赋值
    this.clazz = clazz

  }


  /**
    * 重写Object的toString方法
    *
    * 犯法没有参数的时候() 可以省略
    *
    **/
  override def toString: String = {

    //当最后一行作为返回值的时候return 可以省略
    //return name + "\t" + age

    name + "\t" + age + "\t" + gender
  }

}

